package com.shujia.day06;

public class Demo02Interface2 {
    public static void main(String[] args) {
        /*
            TODO 接口
                1.接口和接口之间的关系
                    接口之间如果要继承需要使用extend来继承，如果要使用类实现接口需要使用 implement
                    同时接口和接口之间可以进行多继承或多层继承
               2.接口和抽象类之间的关系
                    抽象类可以通过implement实现接口，但是接口中的抽象方法，可以选择实现，也可以不实现
                    对于抽象类如果要调用，需要使用其子实现类的对象来进行调用

         */
        new C().function1("A");
        new F().function2("B");

        B b = new F();  // 接口使用多态
        b.function2("B");
        System.out.println(b.VALUE);
//        b.value = 20; // TODO 对于接口中定义的变量称为常量 默认使用 final static 进行修饰


    }
}

interface A {
    public void function1(String str) ;
}
interface D {
    public void function1(String str) ;
}

interface B extends A,D {
    final static int VALUE = 10;

    public void function2(String str) ;
}




class C implements B {

    @Override
    public void function1(String str) {
        System.out.println("C类实现了A接口中方法");
    }

    @Override
    public void function2(String str) {
        System.out.println("C类实现了B接口中的方法");
    }
}

abstract class E implements B {
    @Override
    public void function2(String str) {
        System.out.println("抽象类E实现了B接口中的方法");
    }
}

class F extends E{

    @Override
    public void function1(String str) {
        System.out.println("F实现了A中的抽象方法...");
    }
}


class Person{

}

abstract class Teacher extends Person{

}